/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * Concesionario.java
 *
 * Created on 22-nov-2011, 12:50:11
 */
package concesionario.UI;

import java.util.List;
import java.util.ArrayList;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.*;
import concesionario.source.Coche;
import concesionario.source.Concesionario;
import concesionario.source.Exposicion;
import concesionario.source.Cliente;
import concesionario.source.VendedoraComision;
import javax.swing.JOptionPane;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.DefaultListModel;
/**
 *
 * @author Javier
 */
public class ConcesionarioUI extends javax.swing.JFrame {

    /** Creates new form Concesionario */
    public ConcesionarioUI() {
        initComponents();
        this.setResizable(false);
        this.centerScreen();
        this.conc = new Concesionario();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        ZonaCliente = new javax.swing.JTabbedPane();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        ListCoches = new javax.swing.JList();
        jScrollPane3 = new javax.swing.JScrollPane();
        ListRep = new javax.swing.JList();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jScrollPane5 = new javax.swing.JScrollPane();
        ListClientes = new javax.swing.JList();
        jLabel3 = new javax.swing.JLabel();
        ZonaEmpresa = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        ListVendedores = new javax.swing.JList();
        jScrollPane4 = new javax.swing.JScrollPane();
        ListExpos = new javax.swing.JList();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jScrollPane6 = new javax.swing.JScrollPane();
        ListReserv = new javax.swing.JList();
        jLabel6 = new javax.swing.JLabel();
        Vendidos = new javax.swing.JTabbedPane();
        jScrollPane7 = new javax.swing.JScrollPane();
        ListCochesVendidos = new javax.swing.JList();
        jMenuBar1 = new javax.swing.JMenuBar();
        Archivo = new javax.swing.JMenu();
        GuardCochesVenta = new javax.swing.JMenuItem();
        GuardarDatos = new javax.swing.JMenuItem();
        CargarDatos = new javax.swing.JMenuItem();
        ClientesRes = new javax.swing.JMenuItem();
        QuienCompro = new javax.swing.JMenuItem();
        Salir = new javax.swing.JMenuItem();
        Vendedores = new javax.swing.JMenu();
        AltaVendedor = new javax.swing.JMenuItem();
        BajaVendedor = new javax.swing.JMenuItem();
        ModificarVendedor = new javax.swing.JMenuItem();
        CochesVend = new javax.swing.JMenuItem();
        Exposiciones = new javax.swing.JMenu();
        AltaExp = new javax.swing.JMenuItem();
        BajaExp = new javax.swing.JMenuItem();
        MoverAExp = new javax.swing.JMenuItem();
        ModificarExp = new javax.swing.JMenuItem();
        ConsultExp = new javax.swing.JMenuItem();
        Coches = new javax.swing.JMenu();
        AltaCoche = new javax.swing.JMenuItem();
        BajaCoche = new javax.swing.JMenuItem();
        Repar = new javax.swing.JMenu();
        ConsultaRep = new javax.swing.JMenuItem();
        EnviarRep = new javax.swing.JMenuItem();
        RepCoche = new javax.swing.JMenuItem();
        Clientes = new javax.swing.JMenu();
        AltaCliente = new javax.swing.JMenuItem();
        BajaCliente = new javax.swing.JMenuItem();
        ResCoche = new javax.swing.JMenuItem();
        CancResCoche = new javax.swing.JMenuItem();
        VenderCoche = new javax.swing.JMenuItem();
        ModifCliente = new javax.swing.JMenuItem();
        Ayuda = new javax.swing.JMenu();
        AcercaDe = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
        setTitle("Concesionario");

        ZonaCliente.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                ZonaClienteMouseClicked(evt);
            }
        });

        ListCoches.setModel(new DefaultListModel());
        jScrollPane2.setViewportView(ListCoches);

        ListRep.setModel(new DefaultListModel());
        jScrollPane3.setViewportView(ListRep);

        jLabel1.setFont(new java.awt.Font("Comic Sans MS", 1, 14));
        jLabel1.setText("Clientes");

        jLabel2.setFont(new java.awt.Font("Comic Sans MS", 1, 14));
        jLabel2.setText("Vehículos");

        ListClientes.setModel(new DefaultListModel());
        jScrollPane5.setViewportView(ListClientes);

        jLabel3.setFont(new java.awt.Font("Comic Sans MS", 1, 14));
        jLabel3.setText("Vehículos en reparación");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(53, 53, 53)
                        .addComponent(jLabel2)
                        .addGap(100, 100, 100)
                        .addComponent(jLabel1)))
                .addGap(18, 18, 18)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel3)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(10, 10, 10)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(16, Short.MAX_VALUE)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel2)
                            .addComponent(jLabel1))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jScrollPane5, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap())
        );

        ZonaCliente.addTab("", jPanel2);

        jTabbedPane1.addTab("Zona de cliente", ZonaCliente);

        ZonaEmpresa.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                ZonaEmpresaMouseClicked(evt);
            }
        });

        ListVendedores.setModel(new DefaultListModel());
        jScrollPane1.setViewportView(ListVendedores);

        ListExpos.setModel(new DefaultListModel());
        jScrollPane4.setViewportView(ListExpos);

        jLabel4.setFont(new java.awt.Font("Comic Sans MS", 1, 14));
        jLabel4.setText("Vendedores");

        jLabel5.setFont(new java.awt.Font("Comic Sans MS", 1, 14));
        jLabel5.setText("Exposiciones");

        ListReserv.setModel(new DefaultListModel());
        jScrollPane6.setViewportView(ListReserv);

        jLabel6.setFont(new java.awt.Font("Comic Sans MS", 1, 14));
        jLabel6.setText("Vehículos reservados");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(43, 43, 43)
                        .addComponent(jLabel4)
                        .addGap(83, 83, 83)
                        .addComponent(jLabel5))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 143, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(29, 29, 29)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel6)
                    .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jScrollPane1, jScrollPane4, jScrollPane6});

        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jLabel5)
                    .addComponent(jLabel6))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 173, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jScrollPane1, jScrollPane4, jScrollPane6});

        ZonaEmpresa.addTab("", jPanel1);

        jTabbedPane1.addTab("Zona de empresa", ZonaEmpresa);

        ListCochesVendidos.setModel(new DefaultListModel());
        jScrollPane7.setViewportView(ListCochesVendidos);

        Vendidos.addTab("", jScrollPane7);

        jTabbedPane1.addTab("Vehículos vendidos", Vendidos);

        Archivo.setText("Archivo");

        GuardCochesVenta.setText("Guardar vehículos en venta");
        GuardCochesVenta.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GuardCochesVentaActionPerformed(evt);
            }
        });
        Archivo.add(GuardCochesVenta);

        GuardarDatos.setText("Guardar datos");
        GuardarDatos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                GuardarDatosActionPerformed(evt);
            }
        });
        Archivo.add(GuardarDatos);

        CargarDatos.setText("Cargar datos");
        CargarDatos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CargarDatosActionPerformed(evt);
            }
        });
        Archivo.add(CargarDatos);

        ClientesRes.setText("Mostrar clientes con reserva");
        ClientesRes.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ClientesResActionPerformed(evt);
            }
        });
        Archivo.add(ClientesRes);

        QuienCompro.setText("Mostrar qué cliente compró este vehículo");
        QuienCompro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                QuienComproActionPerformed(evt);
            }
        });
        Archivo.add(QuienCompro);

        Salir.setText("Salir");
        Salir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                SalirActionPerformed(evt);
            }
        });
        Archivo.add(Salir);

        jMenuBar1.add(Archivo);

        Vendedores.setText("Vendedores");

        AltaVendedor.setText("Alta de vendedor");
        AltaVendedor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AltaVendedorActionPerformed(evt);
            }
        });
        Vendedores.add(AltaVendedor);

        BajaVendedor.setText("Baja de vendedor");
        BajaVendedor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BajaVendedorActionPerformed(evt);
            }
        });
        Vendedores.add(BajaVendedor);

        ModificarVendedor.setText("Modificar vendedor");
        ModificarVendedor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ModificarVendedorActionPerformed(evt);
            }
        });
        Vendedores.add(ModificarVendedor);

        CochesVend.setText("Mostrar vehículos vendidos");
        CochesVend.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CochesVendActionPerformed(evt);
            }
        });
        Vendedores.add(CochesVend);

        jMenuBar1.add(Vendedores);

        Exposiciones.setText("Exposiciones");

        AltaExp.setText("Alta de exposición");
        AltaExp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AltaExpActionPerformed(evt);
            }
        });
        Exposiciones.add(AltaExp);

        BajaExp.setText("Baja de exposición");
        BajaExp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BajaExpActionPerformed(evt);
            }
        });
        Exposiciones.add(BajaExp);

        MoverAExp.setText("Mover vehículo a exposición");
        MoverAExp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                MoverAExpActionPerformed(evt);
            }
        });
        Exposiciones.add(MoverAExp);

        ModificarExp.setText("Modificar datos de exposición");
        ModificarExp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ModificarExpActionPerformed(evt);
            }
        });
        Exposiciones.add(ModificarExp);

        ConsultExp.setText("Consultar exposición");
        ConsultExp.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ConsultExpActionPerformed(evt);
            }
        });
        Exposiciones.add(ConsultExp);

        jMenuBar1.add(Exposiciones);

        Coches.setText("Coches");

        AltaCoche.setText("Alta de vehículo");
        AltaCoche.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AltaCocheActionPerformed(evt);
            }
        });
        Coches.add(AltaCoche);

        BajaCoche.setText("Baja de vehículo");
        BajaCoche.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BajaCocheActionPerformed(evt);
            }
        });
        Coches.add(BajaCoche);

        Repar.setText("Reparación");

        ConsultaRep.setText("Consultar reparación");
        ConsultaRep.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ConsultaRepActionPerformed(evt);
            }
        });
        Repar.add(ConsultaRep);

        EnviarRep.setText("Enviar vehículo a reparar");
        EnviarRep.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                EnviarRepActionPerformed(evt);
            }
        });
        Repar.add(EnviarRep);

        RepCoche.setText("Reparar vehículo");
        RepCoche.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                RepCocheActionPerformed(evt);
            }
        });
        Repar.add(RepCoche);

        Coches.add(Repar);

        jMenuBar1.add(Coches);

        Clientes.setText("Clientes");

        AltaCliente.setText("Alta de cliente");
        AltaCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AltaClienteActionPerformed(evt);
            }
        });
        Clientes.add(AltaCliente);

        BajaCliente.setText("Baja de cliente");
        BajaCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                BajaClienteActionPerformed(evt);
            }
        });
        Clientes.add(BajaCliente);

        ResCoche.setText("Reservar vehículo");
        ResCoche.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ResCocheActionPerformed(evt);
            }
        });
        Clientes.add(ResCoche);

        CancResCoche.setText("Cancelar reserva de vehículo");
        CancResCoche.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                CancResCocheActionPerformed(evt);
            }
        });
        Clientes.add(CancResCoche);

        VenderCoche.setText("Vender vehículo");
        VenderCoche.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                VenderCocheActionPerformed(evt);
            }
        });
        Clientes.add(VenderCoche);

        ModifCliente.setText("Modificar datos de cliente");
        ModifCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ModifClienteActionPerformed(evt);
            }
        });
        Clientes.add(ModifCliente);

        jMenuBar1.add(Clientes);

        Ayuda.setText("Ayuda");

        AcercaDe.setText("Acerca de...");
        AcercaDe.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AcercaDeActionPerformed(evt);
            }
        });
        Ayuda.add(AcercaDe);

        jMenuBar1.add(Ayuda);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 509, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jTabbedPane1)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    //La próxima línea es código obsoleto que no se puede borrar por culpa del código autogenerado.
    private void ZonaClienteMouseClicked(java.awt.event.MouseEvent evt) {}
    
    //La próxima línea es código obsoleto que no se puede borrar por culpa del código autogenerado.
    private void ZonaEmpresaMouseClicked(java.awt.event.MouseEvent evt) {}
    
    private void ActualizarListas() {
        this.actualizarListCliente();
        this.actualizarListCochesReparacion();
        this.actualizarListCochesReservados();
        this.actualizarListCochesVendidos();
        this.actualizarListCochesVenta();
        this.actualizarListExposicion();
        this.actualizarListVendedor();
    }
    
    private void AcercaDeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AcercaDeActionPerformed
        JOptionPane.showMessageDialog(this, "Componentes del equipo:\n\n     Javier Díaz Muela\n     Javier Colomo Suárez\n     Joaquín Sánchez Pérez-Cejuela", "Acerca de...", JOptionPane.OK_OPTION);
    }//GEN-LAST:event_AcercaDeActionPerformed

    private void SalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SalirActionPerformed
        int opcion = JOptionPane.showConfirmDialog(this, "¿Seguro que quieres salir?", "Salir del programa", JOptionPane.WARNING_MESSAGE, JOptionPane.YES_NO_OPTION);
        if (opcion == 0) {
            System.exit(0);
        }
    }//GEN-LAST:event_SalirActionPerformed

    private void AltaClienteActionPerformed(java.awt.event.ActionEvent evt) {
        String nombre;
        String dni;
        String domicilio;
        String tlf;
        try {
            nombre = JOptionPane.showInputDialog(this, "Introduce el nombre del cliente", "Nombre", JOptionPane.QUESTION_MESSAGE);
            if (nombre.equals("")) {
                throw new IllegalArgumentException();
            }
            dni = JOptionPane.showInputDialog(this, "Introduce el dni (SIN ESPACIOS) del cliente", "D.N.I.", JOptionPane.QUESTION_MESSAGE);
            if (dni.equals("")) {
                throw new IllegalArgumentException();
            }
            domicilio = JOptionPane.showInputDialog(this, "Introduce el domicilio del cliente", "Domicilio", JOptionPane.QUESTION_MESSAGE);
            if (domicilio.equals("")) {
                throw new IllegalArgumentException();
            }
            tlf = JOptionPane.showInputDialog(this, "Introduce el telefono del cliente", "Teléfono", JOptionPane.QUESTION_MESSAGE);
            if (tlf.equals("")) {
                throw new IllegalArgumentException();
            }
            Cliente c = new Cliente(dni,domicilio,nombre,tlf);
            this.conc.anadirCliente(c);
            this.actualizarListCliente();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "Tienes que rellenar todos los campos.", "Error", JOptionPane.OK_OPTION);
        }
    }
    
    private void AltaCocheActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AltaCocheActionPerformed
        String marca;
        String modelo;
        String matricula;
        double precioCompra;
        double precioVenta;
        try {
            marca = JOptionPane.showInputDialog(this, "Introduce la marca del vehículo", "Marca", JOptionPane.QUESTION_MESSAGE);
            if (marca.equals("")) {
                throw new IllegalArgumentException();
            }
            modelo = JOptionPane.showInputDialog(this, "Introduce el modelo del vehículo", "Modelo", JOptionPane.QUESTION_MESSAGE);
            if (modelo.equals("")) {
                throw new IllegalArgumentException();
            }
            matricula = JOptionPane.showInputDialog(this, "Introduce la matricula (SIN ESPACIOS) del vehículo", "Matricula", JOptionPane.QUESTION_MESSAGE);
            if (matricula.equals("")) {
                throw new IllegalArgumentException();
            }
            precioCompra = Float.parseFloat(JOptionPane.showInputDialog(this, "Introduce el precio de compra del vehículo", "Precio de compra", JOptionPane.QUESTION_MESSAGE));
            precioVenta = Float.parseFloat(JOptionPane.showInputDialog(this, "Introduce el precio de venta del vehículo", "Precio de venta", JOptionPane.QUESTION_MESSAGE));
            Coche c = new Coche(marca,modelo,matricula,precioCompra,precioVenta,Coche.EN_VNT);
            this.conc.anadirCoche(c);
            this.actualizarListCochesVenta();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "Tienes que introducir un precio numérico y rellenar todos los campos.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_AltaCocheActionPerformed

    private void BajaCocheActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BajaCocheActionPerformed
        try {
            if (this.ListCoches.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matricula = ((String)this.ListCoches.getSelectedValue()).substring(0, ((String)this.ListCoches.getSelectedValue()).indexOf(" ", 0));
            this.conc.eliminarCoche(matricula);
            this.actualizarListCochesVenta();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar un vehículo.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_BajaCocheActionPerformed

    private void BajaClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BajaClienteActionPerformed
        try {
            if (this.ListClientes.getSelectedIndices().length != 1) {
                throw new NullPointerException();
            }
            String dniConfig = ((String)this.ListClientes.getSelectedValue()).substring(0, ((String)this.ListClientes.getSelectedValue()).indexOf(" ", 0));
            this.conc.eliminarCliente(dniConfig);
            this.actualizarListCliente();
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "Tienes que elegir un cliente.", "Error", JOptionPane.OK_OPTION);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "No se puede eliminar este cliente porque tiene coches reservados y/o comprados.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_BajaClienteActionPerformed

    private void ModifClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ModifClienteActionPerformed
        String nombre;
        String dni;
        String domicilio;
        String tlf;
        try {
            if (this.ListClientes.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String dniConfig = ((String)this.ListClientes.getSelectedValue()).substring(0, ((String)this.ListClientes.getSelectedValue()).indexOf(" ", 0));
            nombre = JOptionPane.showInputDialog(this, "Introduce el nombre del cliente", "Nombre", JOptionPane.QUESTION_MESSAGE);
            if (nombre.equals("")) {
                throw new IllegalArgumentException();
            }
            dni = JOptionPane.showInputDialog(this, "Introduce el dni (SIN ESPACIOS) del cliente", "D.N.I.", JOptionPane.QUESTION_MESSAGE);
            if (dni.equals("")) {
                throw new IllegalArgumentException();
            }
            domicilio = JOptionPane.showInputDialog(this, "Introduce el domicilio del cliente", "Domicilio", JOptionPane.QUESTION_MESSAGE);
            if (domicilio.equals("")) {
                throw new IllegalArgumentException();
            }
            tlf = JOptionPane.showInputDialog(this, "Introduce el telefono del cliente", "Teléfono", JOptionPane.QUESTION_MESSAGE);
            if (tlf.equals("")) {
                throw new IllegalArgumentException();
            }
            this.conc.getCliente(dniConfig).setNombre(nombre);
            this.conc.getCliente(dniConfig).setDomicilio(domicilio);
            this.conc.getCliente(dniConfig).setTelefono(tlf);
            this.conc.getCliente(dniConfig).setDNI(dni);
            this.actualizarListCliente();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que elegir un cliente y rellenar todos los campos.", "Error", JOptionPane.OK_OPTION);
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "No se está encontrando el cliente.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_ModifClienteActionPerformed

    private void EnviarRepActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_EnviarRepActionPerformed
        try {
            if (this.ListCoches.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matricula = ((String)this.ListCoches.getSelectedValue()).substring(0, ((String)this.ListCoches.getSelectedValue()).indexOf(" ", 0));
            String arreglo = JOptionPane.showInputDialog(this, "Introduce el motivo de la reparación.", "Programar reparación", JOptionPane.QUESTION_MESSAGE);
            if (arreglo.equals("")) {
                throw new IllegalArgumentException();
            }
            this.conc.getCoche(matricula).enviarReparar(arreglo);
            this.actualizarListCochesVenta();
            this.actualizarListCochesReparacion();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar un vehículo que necesite reparación.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_EnviarRepActionPerformed

    private void RepCocheActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_RepCocheActionPerformed
        try {
            if (this.ListRep.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matricula = ((String)this.ListRep.getSelectedValue()).substring(0, ((String)this.ListRep.getSelectedValue()).indexOf(" ", 0));
            this.conc.getCoche(matricula).reparar();
            this.actualizarListCochesVenta();
            this.actualizarListCochesReparacion();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar un vehículo del área de reparaciones.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_RepCocheActionPerformed

    private void ConsultaRepActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ConsultaRepActionPerformed
        try {
            if (this.ListRep.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matricula = ((String)this.ListRep.getSelectedValue()).substring(0, ((String)this.ListRep.getSelectedValue()).indexOf(" ", 0));
            RepCons rp = new RepCons(this,true);
            List<String> reps = new ArrayList<String>();
            for (int i=0; i<this.conc.getCoche(matricula).getSizeReparacion(); i++) {
                reps.add(this.conc.getCoche(matricula).getReparacion(i).toString());
            }
            rp.setList(reps);
            rp.setVisible(true);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar un vehículo del área de reparaciones.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_ConsultaRepActionPerformed

    private void GuardCochesVentaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_GuardCochesVentaActionPerformed
        JFileChooser fc = new JFileChooser();
        FileNameExtensionFilter filtro = new FileNameExtensionFilter("Texto", "*.txt");
        fc.setFileFilter(filtro);
        int i = fc.showSaveDialog(this);
        if (i == JFileChooser.APPROVE_OPTION) {
            File ruta = fc.getSelectedFile();
            System.out.print(ruta.getAbsolutePath());
            if (fc.getFileFilter() == filtro) {
                this.conc.ficheroCochesenVenta(ruta.getAbsolutePath()+".txt");
            } else {
                this.conc.ficheroCochesenVenta(ruta.getAbsolutePath());
            }
        }
    }//GEN-LAST:event_GuardCochesVentaActionPerformed

    private void AltaExpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AltaExpActionPerformed
        String tlf;
        String ciudad;
        try {
            tlf = JOptionPane.showInputDialog(this, "Introduce el número de teléfono de la exposición", "Nombre", JOptionPane.QUESTION_MESSAGE);
            if (tlf.equals("")) {
                throw new IllegalArgumentException();
            }
            ciudad = JOptionPane.showInputDialog(this, "Introduce la ciudad de la exposición", "Ciudad", JOptionPane.QUESTION_MESSAGE);
            if (ciudad.equals("")) {
                throw new IllegalArgumentException();
            }
            Exposicion exp = new Exposicion(ciudad,tlf);
            this.conc.anadirExpo(exp);
            this.actualizarListExposicion();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que rellenar todos los campos.", "Error", JOptionPane.OK_OPTION);
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "Alta cancelada.", "Cancelar", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_AltaExpActionPerformed

    private void BajaExpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BajaExpActionPerformed
        try {
            if (this.ListExpos.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String numExpo = ((String)this.ListExpos.getSelectedValue()).substring(0, ((String)this.ListExpos.getSelectedValue()).indexOf(" ", 0));
            this.conc.eliminarExpo(Integer.parseInt(numExpo));
            this.actualizarListExposicion();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar una exposición.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_BajaExpActionPerformed

    private void MoverAExpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MoverAExpActionPerformed
        try {
            if (this.ListExpos.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            if (this.ListCoches.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matricula = ((String)this.ListCoches.getSelectedValue()).substring(0, ((String)this.ListCoches.getSelectedValue()).indexOf(" ", 0));
            String numExpo = ((String)this.ListExpos.getSelectedValue()).substring(0, ((String)this.ListExpos.getSelectedValue()).indexOf(" ", 0)); 
            this.conc.cambiarExposicion(this.conc.getCoche(matricula), this.conc.getExpoNumero(Integer.parseInt(numExpo)));
            JOptionPane.showMessageDialog(this, "Vehículo trasladado exposición.", "Trasladado", JOptionPane.INFORMATION_MESSAGE);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar un vehículo y la exposición a la que lo desea mover.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_MoverAExpActionPerformed

    private void ModificarExpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ModificarExpActionPerformed
        String tlf;
        String ciudad;
        try {
            if (this.ListExpos.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String numExpo = ((String)this.ListExpos.getSelectedValue()).substring(0, ((String)this.ListExpos.getSelectedValue()).indexOf(" ", 0));
            tlf = JOptionPane.showInputDialog(this, "Introduce el número de teléfono de la exposición", "Nombre", JOptionPane.QUESTION_MESSAGE);
            if (tlf.equals("")) {
                throw new IllegalArgumentException();
            }
            ciudad = JOptionPane.showInputDialog(this, "Introduce la ciudad de la exposición", "Ciudad", JOptionPane.QUESTION_MESSAGE);
            if (ciudad.equals("")) {
                throw new IllegalArgumentException();
            }
            this.conc.getExpoNumero(Integer.parseInt(numExpo)).setLugar(ciudad);
            this.conc.getExpoNumero(Integer.parseInt(numExpo)).setTelefono(tlf);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que rellenar todos los campos.", "Error", JOptionPane.OK_OPTION);
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "Modificación cancelada.", "Cancelar", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_ModificarExpActionPerformed

    private void ConsultExpActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ConsultExpActionPerformed
        try {
            if (this.ListExpos.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String numExpo = ((String)this.ListExpos.getSelectedValue()).substring(0, ((String)this.ListExpos.getSelectedValue()).indexOf(" ", 0));
            if (this.conc.getExpoNumero(Integer.parseInt(numExpo)).getSizeExpoCoches() == 0) {
                throw new NullPointerException();
            }
            ExpoCoches ec = new ExpoCoches(this,true);
            List<String> cochesExpo = new ArrayList<String>();
            for (int i=0; i<this.conc.getExpoNumero(Integer.parseInt(numExpo)).getSizeExpoCoches(); i++) {
                cochesExpo.add(this.conc.getExpoNumero(Integer.parseInt(numExpo)).getCoche(i).toString());
            }
            ec.setList(cochesExpo);
            ec.setConfigTitle("Coches en exposición");
            ec.setVisible(true);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar una exposición.", "Error", JOptionPane.OK_OPTION);
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "La exposición seleccionada no tiene vehículos.", "Vacía", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_ConsultExpActionPerformed

    private void ResCocheActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ResCocheActionPerformed
        try {
            if (this.ListCoches.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            if (this.ListClientes.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matriCoche = ((String)this.ListCoches.getSelectedValue()).substring(0, ((String)this.ListCoches.getSelectedValue()).indexOf(" ", 0));
            String dniConfig = ((String)this.ListClientes.getSelectedValue()).substring(0, ((String)this.ListClientes.getSelectedValue()).indexOf(" ", 0));
            this.conc.reservarCocheCliente(matriCoche, dniConfig);
            this.actualizarListCochesVenta();
            this.actualizarListCochesReservados();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar una coche en venta y un cliente.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_ResCocheActionPerformed

    private void CancResCocheActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CancResCocheActionPerformed
        try {
            if (this.ListReserv.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            if (this.ListClientes.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matriCoche = ((String)this.ListReserv.getSelectedValue()).substring(0, ((String)this.ListReserv.getSelectedValue()).indexOf(" ", 0));
            String dniConfig = ((String)this.ListClientes.getSelectedValue()).substring(0, ((String)this.ListClientes.getSelectedValue()).indexOf(" ", 0));
            this.conc.cancelarReserva(matriCoche,dniConfig);
            this.actualizarListCochesVenta();
            this.actualizarListCochesReservados();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar una coche en venta o reservado y un cliente.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_CancResCocheActionPerformed

    private void VenderCocheActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_VenderCocheActionPerformed
        try {
            if (this.ListCoches.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            if (this.ListClientes.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            if (this.ListVendedores.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matriCoche = ((String)this.ListCoches.getSelectedValue()).substring(0, ((String)this.ListCoches.getSelectedValue()).indexOf(" ", 0));
            String dniCliente = ((String)this.ListClientes.getSelectedValue()).substring(0, ((String)this.ListClientes.getSelectedValue()).indexOf(" ", 0));
            String dniVendedor = ((String)this.ListVendedores.getSelectedValue()).substring(0, ((String)this.ListVendedores.getSelectedValue()).indexOf(" ", 0));
            this.conc.venderCocheCliente(matriCoche, dniCliente, dniVendedor);
            this.actualizarListCochesVenta();
            this.actualizarListCochesReservados();
            this.actualizarListCochesVendidos();
            JOptionPane.showMessageDialog(this, "Vehículo vendido al cliente con D.N.I. "+dniCliente+".", "Vendido", JOptionPane.INFORMATION_MESSAGE);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que seleccionar una coche en venta, un cliente y un vendedor.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_VenderCocheActionPerformed

    private void AltaVendedorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AltaVendedorActionPerformed
        String nombre;
        String dni;
        String domicilio;
        String tlf;
        try {
            nombre = JOptionPane.showInputDialog(this, "Introduce el nombre del vendedor", "Nombre", JOptionPane.QUESTION_MESSAGE);
            if (nombre.equals("")) {
                throw new IllegalArgumentException();
            }
            dni = JOptionPane.showInputDialog(this, "Introduce el dni (SIN ESPACIOS) del vendedor", "D.N.I.", JOptionPane.QUESTION_MESSAGE);
            if (dni.equals("")) {
                throw new IllegalArgumentException();
            }
            domicilio = JOptionPane.showInputDialog(this, "Introduce el domicilio del vendedor", "Domicilio", JOptionPane.QUESTION_MESSAGE);
            if (domicilio.equals("")) {
                throw new IllegalArgumentException();
            }
            tlf = JOptionPane.showInputDialog(this, "Introduce el telefono del vendedor", "Teléfono", JOptionPane.QUESTION_MESSAGE);
            if (tlf.equals("")) {
                throw new IllegalArgumentException();
            }
            VendedoraComision v = new VendedoraComision(dni,domicilio,nombre,tlf);
            this.conc.anadirVCom(v);
            this.actualizarListVendedor();
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "Tienes que rellenar todos los campos.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_AltaVendedorActionPerformed

    private void BajaVendedorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BajaVendedorActionPerformed
        try {
            if (this.ListVendedores.getSelectedIndices().length != 1) {
                throw new NullPointerException();
            }
            String dniConfig = ((String)this.ListVendedores.getSelectedValue()).substring(0, ((String)this.ListVendedores.getSelectedValue()).indexOf(" ", 0));
            this.conc.eliminarVCom(dniConfig);
            this.actualizarListVendedor();
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "Tienes que elegir un vendedor.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_BajaVendedorActionPerformed

    private void ModificarVendedorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ModificarVendedorActionPerformed
        String nombre;
        String dni;
        String domicilio;
        String tlf;
        try {
            if (this.ListVendedores.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String dniConfig = ((String)this.ListVendedores.getSelectedValue()).substring(0, ((String)this.ListVendedores.getSelectedValue()).indexOf(" ", 0));
            nombre = JOptionPane.showInputDialog(this, "Introduce el nombre del vendedor", "Nombre", JOptionPane.QUESTION_MESSAGE);
            if (nombre.equals("")) {
                throw new IllegalArgumentException();
            }
            dni = JOptionPane.showInputDialog(this, "Introduce el dni (SIN ESPACIOS) del vendedor", "D.N.I.", JOptionPane.QUESTION_MESSAGE);
            if (dni.equals("")) {
                throw new IllegalArgumentException();
            }
            domicilio = JOptionPane.showInputDialog(this, "Introduce el domicilio del vendedor", "Domicilio", JOptionPane.QUESTION_MESSAGE);
            if (domicilio.equals("")) {
                throw new IllegalArgumentException();
            }
            tlf = JOptionPane.showInputDialog(this, "Introduce el telefono del vendedor", "Teléfono", JOptionPane.QUESTION_MESSAGE);
            if (tlf.equals("")) {
                throw new IllegalArgumentException();
            }
            this.conc.getVCom(dniConfig).setNombre(nombre);
            this.conc.getVCom(dniConfig).setDomicilio(domicilio);
            this.conc.getVCom(dniConfig).setTelefono(tlf);
            this.conc.getVCom(dniConfig).setDNI(dni);
            this.actualizarListVendedor();
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que elegir un vendedor y rellenar todos los campos.", "Error", JOptionPane.OK_OPTION);
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "No se está encontrando el vendedor.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_ModificarVendedorActionPerformed

    private void CochesVendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CochesVendActionPerformed
        try {
            if (this.ListVendedores.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String dniConfig = ((String)this.ListVendedores.getSelectedValue()).substring(0, ((String)this.ListVendedores.getSelectedValue()).indexOf(" ", 0));
            if (this.conc.getVCom(dniConfig).getSizeCochesVendidos() == 0) {
                throw new NullPointerException();
            }
            ExpoCoches ec = new ExpoCoches(this,true);
            List<String> cochesVend = new ArrayList<String>();
            for (int i=0; i<this.conc.getVCom(dniConfig).getSizeCochesVendidos(); i++) {
                cochesVend.add(this.conc.getVCom(dniConfig).getCochesVendidos(i).toString());
            }
            ec.setList(cochesVend);
            ec.setConfigTitle("Vehículos vendidos");
            ec.setVisible(true);
            double sueldo = this.conc.getVCom(dniConfig).sueldo();
            JOptionPane.showMessageDialog(this, "El sueldo del vendedor con D.N.I. "+dniConfig+" es "+sueldo+" €.", "Sueldo", JOptionPane.INFORMATION_MESSAGE);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que elegir un vendedor.", "Error", JOptionPane.OK_OPTION);
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "El vendedor seleccionado no ha vendido nada aún.", "Vacía", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_CochesVendActionPerformed

    private void ClientesResActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ClientesResActionPerformed
        try {
            if (this.ListClientes.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String dniConfig = ((String)this.ListClientes.getSelectedValue()).substring(0, ((String)this.ListClientes.getSelectedValue()).indexOf(" ", 0));
            if (this.conc.getCliente(dniConfig).getSizeCocheR() == 0) {
                throw new NullPointerException();
            }
            ExpoCoches ec = new ExpoCoches(this,true);
            List<String> cochesVend = new ArrayList<String>();
            for (int i=0; i<this.conc.getCliente(dniConfig).getSizeCocheR(); i++) {
                cochesVend.add(this.conc.getCliente(dniConfig).getCocheR(i).toString());
            }
            ec.setList(cochesVend);
            ec.setConfigTitle(this.conc.getCliente(dniConfig).toString());
            ec.setVisible(true);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que elegir un cliente.", "Error", JOptionPane.OK_OPTION);
        } catch (NullPointerException e) {
            JOptionPane.showMessageDialog(this, "El cliente seleccionado no ha reservada nada aún.", "Vacía", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_ClientesResActionPerformed

    private void QuienComproActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_QuienComproActionPerformed
        try {
            if (this.ListCochesVendidos.getSelectedIndices().length != 1) {
                throw new IllegalArgumentException();
            }
            String matriCoche = ((String)this.ListCochesVendidos.getSelectedValue()).substring(0, ((String)this.ListCochesVendidos.getSelectedValue()).indexOf(" ", 0));
            String cliente = this.conc.devolverCliente(matriCoche).toString();
            JOptionPane.showMessageDialog(this, "El cliente que compró este vehículo es "+cliente+".", "Cliente", JOptionPane.INFORMATION_MESSAGE);
        } catch (IllegalArgumentException e) {
            JOptionPane.showMessageDialog(this, "Tienes que elegir un vehículo vendido.", "Error", JOptionPane.OK_OPTION);
        }
    }//GEN-LAST:event_QuienComproActionPerformed

    private void GuardarDatosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_GuardarDatosActionPerformed
        JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int op = fc.showDialog(this, "Guardar en este directorio");
        if (op == JFileChooser.APPROVE_OPTION) {
            File ruta = fc.getSelectedFile();
            try {
                this.conc.guardar(ruta);
            } catch (IOException e) {
                JOptionPane.showMessageDialog(this, "No se ha podido guardar.", "Error", JOptionPane.OK_OPTION);
            }
        }
    }//GEN-LAST:event_GuardarDatosActionPerformed

    private void CargarDatosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CargarDatosActionPerformed
        JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int op = fc.showDialog(this, "Cargar desde este directorio");
        if (op == JFileChooser.APPROVE_OPTION) {
            File ruta = fc.getSelectedFile();
            try {
                this.conc.cargar(ruta);
                this.ActualizarListas();
            } catch (Exception e) {
                JOptionPane.showMessageDialog(this, "No se ha podido cargar.", "Error", JOptionPane.OK_OPTION);
            }
        }
    }//GEN-LAST:event_CargarDatosActionPerformed
    
    private void actualizarListCochesVenta() {
        DefaultListModel modelo1 = new DefaultListModel();
        for (int i=0; i<this.conc.getSizeAlmacen(); i++) {
            if (this.conc.getCoche(i).getEstado().equals(Coche.EN_VNT)) {
                modelo1.addElement(this.conc.getCoche(i).toString());
            }
        }
        this.ListCoches.setModel(modelo1);
    }
    
    private void actualizarListCochesReparacion() {
        DefaultListModel modelo1 = new DefaultListModel();
        for (int i=0; i<this.conc.getSizeAlmacen(); i++) {
            if (this.conc.getCoche(i).getEstado().equals(Coche.EN_REP)) {
                modelo1.addElement(this.conc.getCoche(i).toString());
            }
        }
        this.ListRep.setModel(modelo1);
    }
    
    private void actualizarListExposicion() {
        DefaultListModel modelo1 = new DefaultListModel();
        for (int i=0; i<this.conc.getSizeExposicion(); i++) {
            modelo1.addElement(this.conc.getExpo(i).toString());
        }
        this.ListExpos.setModel(modelo1);
    }
    
    private void actualizarListCliente() {
        DefaultListModel modelo1 = new DefaultListModel();
        for (int i=0; i<this.conc.getSizeCliente(); i++) {
            modelo1.addElement(this.conc.getCliente(i).toString());
        }
        this.ListClientes.setModel(modelo1);
    }
    
    private void actualizarListCochesReservados() {
        DefaultListModel modelo1 = new DefaultListModel();
        for (int i=0; i<this.conc.getSizeAlmacen(); i++) {
            if (this.conc.getCoche(i).getEstado().equals(Coche.EN_RES)) {
                modelo1.addElement(this.conc.getCoche(i).toString());
            }
        }
        this.ListReserv.setModel(modelo1);
    }
    
    private void actualizarListVendedor() {
        DefaultListModel modelo1 = new DefaultListModel();
        for (int i=0; i<this.conc.getSizeVCom(); i++) {
            modelo1.addElement(this.conc.getVCom(i).toString());
        }
        this.ListVendedores.setModel(modelo1);
    }
    
    private void actualizarListCochesVendidos() {
        DefaultListModel modelo1 = new DefaultListModel();
        for (int i=0; i<this.conc.getSizeVendidos(); i++) {
            modelo1.addElement(this.conc.getCocheVendido(i).toString());
        }
        this.ListCochesVendidos.setModel(modelo1);
    }
    
    private void centerScreen() {
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        int w = this.getSize().width;
        int h = this.getSize().height;
        int x = (dim.width-w)/2;
        int y = (dim.height-h)/2;
        this.setLocation(x, y);
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(ConcesionarioUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(ConcesionarioUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(ConcesionarioUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(ConcesionarioUI.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new ConcesionarioUI().setVisible(true);
            }
        });
    }
    private Concesionario conc;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JMenuItem AcercaDe;
    private javax.swing.JMenuItem AltaCliente;
    private javax.swing.JMenuItem AltaCoche;
    private javax.swing.JMenuItem AltaExp;
    private javax.swing.JMenuItem AltaVendedor;
    private javax.swing.JMenu Archivo;
    private javax.swing.JMenu Ayuda;
    private javax.swing.JMenuItem BajaCliente;
    private javax.swing.JMenuItem BajaCoche;
    private javax.swing.JMenuItem BajaExp;
    private javax.swing.JMenuItem BajaVendedor;
    private javax.swing.JMenuItem CancResCoche;
    private javax.swing.JMenuItem CargarDatos;
    private javax.swing.JMenu Clientes;
    private javax.swing.JMenuItem ClientesRes;
    private javax.swing.JMenu Coches;
    private javax.swing.JMenuItem CochesVend;
    private javax.swing.JMenuItem ConsultExp;
    private javax.swing.JMenuItem ConsultaRep;
    private javax.swing.JMenuItem EnviarRep;
    private javax.swing.JMenu Exposiciones;
    private javax.swing.JMenuItem GuardCochesVenta;
    private javax.swing.JMenuItem GuardarDatos;
    private javax.swing.JList ListClientes;
    private javax.swing.JList ListCoches;
    private javax.swing.JList ListCochesVendidos;
    private javax.swing.JList ListExpos;
    private javax.swing.JList ListRep;
    private javax.swing.JList ListReserv;
    private javax.swing.JList ListVendedores;
    private javax.swing.JMenuItem ModifCliente;
    private javax.swing.JMenuItem ModificarExp;
    private javax.swing.JMenuItem ModificarVendedor;
    private javax.swing.JMenuItem MoverAExp;
    private javax.swing.JMenuItem QuienCompro;
    private javax.swing.JMenuItem RepCoche;
    private javax.swing.JMenu Repar;
    private javax.swing.JMenuItem ResCoche;
    private javax.swing.JMenuItem Salir;
    private javax.swing.JMenu Vendedores;
    private javax.swing.JMenuItem VenderCoche;
    private javax.swing.JTabbedPane Vendidos;
    private javax.swing.JTabbedPane ZonaCliente;
    private javax.swing.JTabbedPane ZonaEmpresa;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JScrollPane jScrollPane5;
    private javax.swing.JScrollPane jScrollPane6;
    private javax.swing.JScrollPane jScrollPane7;
    private javax.swing.JTabbedPane jTabbedPane1;
    // End of variables declaration//GEN-END:variables
}
